# Copyright (c) 2009 Christopher Keith (chris.keith@gmail.com)
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation
# files (the "Software"), to deal in the Software without
# restriction, including without limitation the rights to use,
# copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following
# conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.

# Demonstrate simple command lookup in Python.
# See usage() below for directions for usage.

import sys
import getopt
import pdb
import string

def printTraceBack():
    print sys.exc_info()[0]
    if sys.exc_info()[2] != None:
        traceback.print_tb(sys.exc_info()[2])

class dscl:

    def __init__(self):
        self.debug = False
        
    def usage(self):
        print 'Demonstrate simple command lookups.'
        print '    -d    Drop into Python debugger.'
        print '    -h    This message.'
        print '    -x    Dump mode.'
        print 'For example: /cygdrive/c/Python25/python dscl.py < testdata.txt'
        sys.exit(0)
        
    def handleCommandLine(self):
        try:
            opts, args = getopt.getopt(sys.argv[1:], "dhx")
        except:
            printTraceBack()
            self.usage()
        for o, a in opts:
            if o == "-d":
                pdb.set_trace()
            if o == "-h":
                self.usage()
            if o == "-x":
                self.debug = True
        return args

    def reverse(self, params):
        s = ''
        for p in params:
            s = p + ' ' + s
        print s.strip()
        
    def doprint(self, params):
        s = ''
        for p in params:
            s = s + ' ' + p
        print s.strip()
        
    def doIt(self):
        args = self.handleCommandLine()
        for line in sys.stdin.readlines():
            params = line.rstrip().split(line[0])
            getattr(self, params[1])(params[2:])
        
def main():
    dscl().doIt()

if __name__ == "__main__":
    main()

